package applicationModels;

import java.io.Serializable;
import java.util.List;
import java.util.TreeSet;

import org.joda.time.LocalDate;
import org.uqbar.commons.model.ObservableUtils;
import org.uqbar.commons.utils.Observable;

import com.uqbar.poo.aop.ObservableBehavior;

import database.Tienda;
import modelo.Planificacion;

@Observable
public class ListadoPlanificaciones implements Serializable{
	

	private LocalDate fechaCrear;
	private Planificacion planificacionSeleccionada;
	private List<Planificacion> planificaciones;
	

	public ListadoPlanificaciones(){
		
		List<Planificacion> inicializarPlanificaciones = Tienda.getInstance().getPlanificaciones();
		
		this.planificaciones = inicializarPlanificaciones;
		
		Tienda.getInstance().setPlanificaciones(inicializarPlanificaciones);
		fechaCrear= planificaciones.get(planificaciones.size()-1).getFecha().plusDays(1);
		
		//planificaciones=this.filtrarPlanificaciones();
	}
	
	public void refreshPlanificaciones(){
		this.setPlanificaciones(null);
		this.setPlanificaciones(Tienda.getInstance().getPlanificaciones());
	}

	private TreeSet<Planificacion> filtrarPlanificaciones() {
		TreeSet<Planificacion> resultados=new TreeSet<Planificacion>();
		for(Planificacion plani:Tienda.getInstance().getPlanificaciones()){
			if(plani.getFecha().equals(new LocalDate())||
					plani.getFecha().isAfter(new LocalDate())){
				resultados.add(plani);
			}
		}
		return resultados;
	}
	
	public Planificacion getPlanificacionSeleccionada() {
		return planificacionSeleccionada;
	}
	
	public void setPlanificacionSeleccionada(Planificacion planificacionSeleccionada) {
		this.planificacionSeleccionada = planificacionSeleccionada;
	}
	
	public LocalDate getFechaCrear() {
		return fechaCrear;
	}
	
	public void setFechaCrear(LocalDate fechaCrear) {
		this.fechaCrear = fechaCrear;
	}
	
	public List<Planificacion> getPlanificaciones() {
		return planificaciones;
	}
	
	public void setPlanificaciones(List<Planificacion> planificaciones) {
		this.planificaciones = planificaciones;
		//new ObservableUtils().firePropertyChanged(this, "", this.planificaciones); 
	}

	public void eliminarPlanificacionSeleccionada() {
		this.planificaciones.remove(this.planificacionSeleccionada);
		
	}
	
}
